cleaned up Maybe + better tests