more methods, better format