finishing initial implementation
: