Refactor and added Draw implementation partially