functionality done. version 1.0