A lot more implementation details completed