implementing it properly