make it less primitive!!!