How to maintain two variants of the same app in the market (free / paid)?

I am developing a new app that will come in three versions: Free, paid lite and paid pro.
I am planning on using the Google license model and therefor use the following way to develop my app:
I Have a library project that contains all the basic code and activities.
I have three projects that use this library and where needed I make new activities that inherited the base activity class, in the new activity class I override functions to exclude or include functions.

For example a base activity could be:
public class Base_Activity extends Activity {
protected void DoSomething() {
//Some code here
}
}

In my free version I would do this:
public class Free_Activity extends Base_Activity {
@Override
protected void DoSomething() {
//Do nothing, maybe inform the user this function is pro only
}
}

And the pro version would be:
public class Pro_Activity extends Base_Activity {
}
As you can see I did not override the function because I do not exclude the functionality in the pro version.

In your manifest you register the Pro_Activity/Free_Activity classes.

This way you have the option to customize the versions, have 1 master library with all the working code, and you can use the Play license model.

License model has its cons. You can’t sell your app on other stores (Amazon, SlideMe etc.) and users need to have internet connection to run your app. I saw a thread on Reddit where lots of people were complaining about how they hate when paid apps stop working without network connection.

You can set your own cache. For example if network is down, keep working for 30 days.
So there is only need for a network connection once in 30 days.

But yes you will not be able to sell your app outside the Google Play store.

the android licensing library does provide you with such a cache … works great, but I hate it during developing and testing (didn’t find a way to reset the cache yet xD)