all basic features implemented