Reverted back to no abstract classes