Added comments, split package, added interface