all main functionality finished2