v1 - all functionality added