some basic features implemented, feels solid