Moved implementation classes into a separate package