Moved implementation classes into separate package