added all functionality, no styling yet