design methods