All functionality implemented. Code needs cleaning.