all features implemented, tests added