implemented mostly features